home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Shareware World / Utilities / Text Processing / Alpha / Tcl / SystemCode / templates.tcl < prev    next >
Text File  |  1996-08-15  |  2KB  |  79 lines

  1. #=============================================================================
  2. # Template editing, just an example.  To use, load this file, hit
  3. # control-i, and a for template will appear. Consecutive control-j's
  4. # will step you though various fields of the for statement. 
  5. #=============================================================================
  6.  
  7. # C 'for' template
  8.  
  9. menu -n Templates {
  10.     "forTemplate"
  11.     "whileTemplate"
  12.     "(-"
  13.     "/\\nextStop"
  14.     "(-"
  15.     "findTag…"
  16.     "createTagFile"}
  17. insertMenu Templates
  18.  
  19. proc forTemplate {} {
  20.     indentLine
  21.     set pos [getPos]
  22.     set indent [indentString $pos]
  23.     set str1 "for (\;\;)\r"
  24.     set str2 "\{\r"
  25.     set str3 "\t\r"
  26.     set str4 "\}\r"
  27.  
  28.     insertText $str1 $indent $str2 $indent $str3 $indent $str4 $indent
  29.     set len [string length $indent]
  30.     
  31.     createTMark stop1 [expr $pos+5]
  32.     createTMark stop2 [expr $pos+6]
  33.     createTMark stop3 [expr $pos+7]
  34.     set temp4 [expr { $pos + [string length $str1] + [string length $str2] +
  35.                              [string length $str3] + 2 * $len - 1}]
  36.     createTMark stop4 $temp4
  37.     createTMark stop5 [expr { $temp4 + 2 * [string length $str4] + $len}]
  38.     
  39.     global stopRing
  40.     set stopRing "stop1 stop2 stop3 stop4 stop5"
  41.     gotoTMark stop1
  42.     bind 'j' <z> nextStop
  43. }
  44.  
  45. proc whileTemplate {} {
  46.     indentLine
  47.     set pos [getPos]
  48.     set indent [indentString $pos]
  49.     set str1 "while ()\r"
  50.     set str2 "\{\r"
  51.     set str3 "\t\r"
  52.     set str4 "\}\r"
  53.  
  54.     insertText $str1 $indent $str2 $indent $str3 $indent $str4 $indent
  55.     set len [string length $indent]
  56.     
  57.     createTMark stop1 [expr $pos+7]
  58.     set temp [expr { $pos + [string length $str1] + [string length $str2] +
  59.                              [string length $str3] + 2 * $len - 1}]
  60.     createTMark stop2 $temp
  61.     createTMark stop3 [expr { $temp + 2 * [string length $str4] + $len}]
  62.     
  63.     global stopRing
  64.     set stopRing "stop1 stop2 stop3"
  65.     gotoTMark stop1
  66.     bind 'j' <z> nextStop
  67. }
  68.  
  69. proc nextStop {} {
  70.     global stopRing
  71.     set first [lindex $stopRing 0]
  72.     set stopRing [lreplace $stopRing 0 0]
  73.     set stopRing [lappend stopRing $first]
  74.     gotoTMark [lindex $stopRing 0]
  75. }
  76.  
  77.  
  78.  
  79.